home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / phpMyAdmin / server_engines.php < prev    next >
PHP Script  |  2005-03-05  |  8KB  |  228 lines

  1. <?php
  2. /* $Id: server_engines.php,v 2.8 2005/03/05 21:34:23 rabus Exp $ */
  3. // vim: expandtab sw=4 ts=4 sts=4:
  4.  
  5.  
  6. /**
  7.  * Does the common work
  8.  */
  9. require('./server_common.inc.php');
  10. require('./libraries/storage_engines.lib.php');
  11.  
  12.  
  13. /**
  14.  * Displays the links
  15.  */
  16. require('./server_links.inc.php');
  17.  
  18.  
  19. /**
  20.  * Function for displaying the table of an engine's parameters
  21.  *
  22.  * @param   array   List of MySQL variables and corresponding localized descriptions.
  23.  *                  The array elements should have the following format:
  24.  *                      $variable => array('title' => $title, 'desc' => $description);
  25.  * @param   string  Prefix for the SHOW VARIABLES query.
  26.  * @param   int     The indentation level
  27.  *
  28.  * @global  array   The global phpMyAdmin configuration.
  29.  *
  30.  * @return  string  The table that was generated based on the given information.
  31.  */
  32. define('PMA_ENGINE_DETAILS_TYPE_PLAINTEXT', 0);
  33. define('PMA_ENGINE_DETAILS_TYPE_SIZE',      1);
  34. define('PMA_ENGINE_DETAILS_TYPE_NUMERIC',   2); //Has no effect yet...
  35. define('PMA_ENGINE_DETAILS_TYPE_BOOLEAN',   3); // 'ON' or 'OFF'
  36. function PMA_generateEngineDetails($variables, $like = NULL, $indent = 0) {
  37.     global $cfg;
  38.  
  39.     $spaces = '';
  40.     for ($i = 0; $i < $indent; $i++) {
  41.         $spaces .= '    ';
  42.     }
  43.  
  44.     /**
  45.      * Get the variables!
  46.      */
  47.     if (!empty($variables)) {
  48.         $sql_query = 'SHOW '
  49.                    . (PMA_MYSQL_INT_VERSION >= 40102 ? 'GLOBAL ' : '')
  50.                    . 'VARIABLES'
  51.                    . (empty($like) ? '' : ' LIKE \'' . $like . '\'')
  52.                    . ';';
  53.         $res = PMA_DBI_query($sql_query);
  54.         $mysql_vars = array();
  55.         while ($row = PMA_DBI_fetch_row($res)) {
  56.             if (isset($variables[$row[0]])) $mysql_vars[$row[0]] = $row[1];
  57.         }
  58.         PMA_DBI_free_result($res);
  59.         unset($res, $row, $sql_query);
  60.     }
  61.  
  62.     if (empty($mysql_vars)) return $spaces . '<p>' . "\n"
  63.                                  . $spaces . '    ' . $GLOBALS['strNoDetailsForEngine'] . "\n"
  64.                                  . $spaces . '</p>' . "\n";
  65.  
  66.     $dt_table          = $spaces . '<table>' . "\n";
  67.     $useBgcolorOne     = TRUE;
  68.     $has_content       = FALSE;
  69.  
  70.     foreach ($variables as $var => $details) {
  71.         if (!isset($mysql_vars[$var])) continue;
  72.  
  73.         if (!isset($details['type'])) $details['type'] = PMA_ENGINE_DETAILS_TYPE_PLAINTEXT;
  74.         $is_num = $details['type'] == PMA_ENGINE_DETAILS_TYPE_SIZE || $details['type'] == PMA_ENGINE_DETAILS_TYPE_NUMERIC;
  75.  
  76.         $bgcolor = $useBgcolorOne ? $cfg['BgcolorOne'] : $cfg['BgcolorTwo'];
  77.  
  78.         $dt_table     .= $spaces . '    <tr>' . "\n"
  79.                        . $spaces . '        <td bgcolor="' . $bgcolor . '">' . "\n";
  80.         if (!empty($variables[$var]['desc'])) {
  81.             $dt_table .= $spaces . '            ' . PMA_showHint($details['desc']) . "\n";
  82.         }
  83.         $dt_table     .= $spaces . '        </td>' . "\n"
  84.                        . $spaces . '        <td bgcolor="' . $bgcolor . '">' . "\n"
  85.                        . $spaces . '             ' . $details['title'] . ' ' . "\n"
  86.                        . $spaces . '        </td>' . "\n"
  87.                        . $spaces . '        <td bgcolor="' . $bgcolor . '"' . ($is_num ? ' align="right"' : '') . '>' . "\n"
  88.                        . $spaces . '             ';
  89.         switch ($details['type']) {
  90.             case PMA_ENGINE_DETAILS_TYPE_SIZE:
  91.                 $parsed_size = PMA_formatByteDown($mysql_vars[$var]);
  92.                 $dt_table .= $parsed_size[0] . ' ' . $parsed_size[1];
  93.                 unset($parsed_size);
  94.             break;
  95.             default:
  96.                 $dt_table .= htmlspecialchars($mysql_vars[$var]);
  97.         }
  98.         $dt_table     .= ' ' . "\n"
  99.                       . $spaces . '        </td>' . "\n"
  100.                       . $spaces . '    </tr>' . "\n";
  101.         $useBgcolorOne = !$useBgcolorOne;
  102.         $has_content   = TRUE;
  103.     }
  104.  
  105.     if (!$has_content) return '';
  106.  
  107.     return $dt_table;
  108. }
  109.  
  110.  
  111. /**
  112.  * Did the user request information about a certain storage engine?
  113.  */
  114. if (empty($engine) || empty($mysql_storage_engines[$engine])) {
  115.  
  116.     /**
  117.      * Displays the sub-page heading
  118.      */
  119.     echo '<h2>' . "\n"
  120.        . ($cfg['MainPageIconic'] ? '<img src="' . $pmaThemeImage . 'b_engine.png" width="16" height="16" border="0" hspace="2" align="middle" />' : '' )
  121.        . '    ' . $strStorageEngines . "\n"
  122.        . '</h2>' . "\n";
  123.  
  124.  
  125.     /**
  126.      * Displays the table header
  127.      */
  128.     echo '<table>' . "\n"
  129.        . '    <thead>' . "\n"
  130.        . '        <tr>' . "\n"
  131.        . '            <th>' . "\n"
  132.        . '                ' . $strStorageEngine . "\n"
  133.        . '            </th>' . "\n";
  134.     if (PMA_MYSQL_INT_VERSION >= 40102) {
  135.         echo '            <th>' . "\n"
  136.            . '                ' . $strDescription . "\n"
  137.            . '            </th>' . "\n";
  138.     }
  139.     echo '        </tr>' . "\n"
  140.        . '    </thead>' . "\n"
  141.        . '    <tbody>' . "\n";
  142.  
  143.  
  144.     /**
  145.      * Listing the storage engines
  146.      */
  147.     $useBgcolorOne = TRUE;
  148.     $common_url = './server_engines.php?' . PMA_generate_common_url() . '&engine=';
  149.     foreach ($mysql_storage_engines as $engine => $details) {
  150.         echo '        <tr' . ($details['Support'] == 'NO' || $details['Support'] == 'DISABLED' ? ' class="disabled"' : '') . '>' . "\n"
  151.            . '            <td bgcolor="' . ($useBgcolorOne ? $cfg['BgcolorOne'] : $cfg['BgcolorTwo']) . '">' . "\n"
  152.            . '                <a href="' . $common_url . $engine . '">' . "\n"
  153.            . '                    ' . htmlspecialchars($details['Engine']) . "\n"
  154.            . '                </a>' . "\n"
  155.            . '            </td>' . "\n";
  156.         if (PMA_MYSQL_INT_VERSION >= 40102) {
  157.             echo '            <td bgcolor="' . ($useBgcolorOne ? $cfg['BgcolorOne'] : $cfg['BgcolorTwo']) . '">' . "\n"
  158.                . '                ' . htmlspecialchars($details['Comment']) . "\n"
  159.                . '            </td>' . "\n";
  160.         }
  161.         echo '        </tr>' . "\n";
  162.         $useBgcolorOne = !$useBgcolorOne;
  163.     }
  164.     unset($useBgcolorOne, $common_url, $engine, $details);
  165.     echo '    </tbody>' . "\n"
  166.        . '</table>' . "\n";
  167.  
  168. } else {
  169.  
  170.     /**
  171.      * Displays details about a given Storage Engine
  172.      */
  173.  
  174.     $engine_plugin = PMA_StorageEngine::getEngine($engine);
  175.     echo '<h2>' . "\n"
  176.        . ($cfg['MainPageIconic'] ? '<img src="' . $pmaThemeImage . 'b_engine.png" width="16" height="16" border="0" hspace="2" align="middle" />' : '' )
  177.        . '    ' . htmlspecialchars($engine_plugin->getTitle()) . "\n"
  178.        . '</h2>' . "\n\n";
  179.     if (PMA_MYSQL_INT_VERSION >= 40102) {
  180.         echo '<p>' . "\n"
  181.            . '    <i>' . "\n"
  182.            . '        ' . htmlspecialchars($engine_plugin->getComment()) . "\n"
  183.            . '    </i>' . "\n"
  184.            . '</p>' . "\n\n";
  185.     }
  186.     $infoPages = $engine_plugin->getInfoPages();
  187.     if (!empty($infoPages) && is_array($infoPages)) {
  188.         $common_url = './server_engines.php?' . PMA_generate_common_url() . '&engine=' . urlencode($engine);
  189.         echo '<p>' . "\n"
  190.            . '    <b>[</b>' . "\n";
  191.         if (empty($page)) {
  192.             echo '    <b>' . $strServerTabVariables . '</b>' . "\n";
  193.         } else {
  194.             echo '    <a href="' . $common_url . '">' . $strServerTabVariables . '</a>' . "\n";
  195.         }
  196.         foreach ($infoPages as $current => $label) {
  197.             echo '    <b>|</b>' . "\n";
  198.             if (isset($page) && $page == $current) {
  199.                 echo '    <b>' . $label . '</b>' . "\n";
  200.             } else {
  201.                 echo '    <a href="' . $common_url . '&page=' . urlencode($current) . '">' . $label . '</a>' . "\n";
  202.             }
  203.         }
  204.         unset($current, $label);
  205.         echo '    <b>]</b>' . "\n"
  206.            . '</p>' . "\n\n";
  207.     }
  208.     unset($infoPages, $page_output);
  209.     if (!empty($page)) {
  210.         $page_output = $engine_plugin->getPage($page);
  211.     }
  212.     if (!empty($page_output)) {
  213.         echo $page_output;
  214.     } else {
  215.         echo '<p>' . "\n"
  216.            . '    ' . $engine_plugin->getSupportInformationMessage() . "\n"
  217.            . '</p>' . "\n"
  218.            . PMA_generateEngineDetails($engine_plugin->getVariables(), $engine_plugin->getVariablesLikePattern());
  219.     }
  220. }
  221.  
  222. /**
  223.  * Sends the footer
  224.  */
  225. require_once('./footer.inc.php');
  226.  
  227. ?>
  228.